Object-oriented programming is defined as a method of implementation in which programs are organized as cooperative collections of objects, each of which represents an instance of some type. See a text entitled Object-Oriented Analysis and Design, by Grady Booch, 1994.
An object is an abstract representation of a real-world concept or thing--such as a person, a software package, or an event. In the computer system memory, the state of an object is represented by the values of instance variables defined for the object's type. For example, the state of a person is their name, birth date, spouse, etc.
The behavior of an object is the set of operations that the object can perform. In the computer system, the behavior of an object is represented by the operations defined for the object's type.
Objects in the memory of a computer system represent real-world or conceptual entities. An object occupies a portion of memory which contains named instance variables for storing information about the entity. An object also provides operations that can be perform ed by the computer processor for accessing and modifying the information.
The prior art demonstrates a variety of ways for representing bi-directional relationships between objects in the memory of a computer system. Bi-directional relationships are often represented using memory pointers stored either in the related objects themselves or in separate relational tables. Storing the pointers within the objects themselves offers more efficiency than relational tables, but tends to impose complexity and a lack of referential integrity.
One type of relationship between objects can be described as ownership. The ownership relationship is bi-directional--the relationship is seen from the perspective of the owning object to the owned object and from the opposite perspective, i.e. from the owned object to its owner.
Ownership implies certain constraints. That is, an object has at most one owner and an owner can be constrained to own at most one object, or it can be allowed to own many. Ownership implies certain behavior. That is, deletion of an owned object causes its owner to no longer own it. Deletion of an owning object causes deletion of whatever it owns. When an object is assigned to an owner, it is implicitly disowned by its previous owner. If an owner is constrained to own only one object and it already owns an object, assigning it a different object to own causes the previously owned object to be deleted.